package com.he1618;

import com.tencent.polaris.api.config.Configuration;
import com.tencent.polaris.api.core.ProviderAPI;
import com.tencent.polaris.api.rpc.InstanceRegisterRequest;
import com.tencent.polaris.api.rpc.InstanceRegisterResponse;
import com.tencent.polaris.client.api.SDKContext;
import com.tencent.polaris.factory.ConfigAPIFactory;
import com.tencent.polaris.factory.api.DiscoveryAPIFactory;
import com.tencent.polaris.factory.config.ConfigurationImpl;
import com.tencent.polaris.factory.config.configuration.ConfigFileConfigImpl;

import java.io.IOException;
import java.net.URL;

/**
 * Hello world!
 *
 */
public class App 
{
    public static void main( String[] args ) throws IOException {
        System.out.println("Resource Path: " + getResourcePath("polaris.yml"));

        //Configuration configuration = ProviderExampleUtils.createConfiguration("E:\\polaris.yml");
       // configuration.getGlobal().getServerConnectors().get(0).setAddresses();
        Configuration config = ConfigAPIFactory.defaultConfig();
        config.getGlobal().getServerConnector().getAddresses().set(0,"119.91.66.223:8091");
        SDKContext context = SDKContext.initContextByConfig(config);


        ProviderAPI providerAPI = DiscoveryAPIFactory.createProviderAPIByContext(context);
        for (int i = 0; i < 10; i++) {
            InstanceRegisterRequest request = new InstanceRegisterRequest();
// 设置实例所属服务信息
            request.setService("test"+i);
// 设置实例所属服务的命名空间信息
            request.setNamespace("namespace");
// 设置实例的 host 信息
            request.setHost("192.16.3.108");
// 设置实例的端口信息
            request.setPort(8003);
// 可选，资源访问Token，即用户/用户组访问凭据，仅当服务端开启客户端鉴权时才需配置
            request.setToken("token");
// 设置实例版本
            request.setVersion("version");
// 设置实例的协议
            request.setProtocol("http");
// 设置实例权重
            request.setWeight(100);
// 设置实例的标签
            // request.setMetadata(metadata);
// 设置实例地理位置 zone 信息
            request.setZone("zone");
// 设置实例地理位置 region 信息
            request.setRegion("region");
// 设置实例地理位置 campus 信息
            request.setCampus("campus");
// 设置心跳健康检查ttl，单位为s，不填默认为5s，TTL的取值范围为 (0s, 60s]
// 开启了心跳健康检查，客户端必须以TTL间隔上报心跳
// 健康检查服务器3个TTL未受到心跳则将实例置为不健康
            request.setTtl(3);
            InstanceRegisterResponse registerResp = providerAPI.registerInstance(request);
        }




    }

    public static String getResourcePath(String fileName) {
        // 使用当前类的 ClassLoader 获取资源
        ClassLoader classLoader = App.class.getClassLoader();

        // 使用 ClassLoader 的 getResource 方法获取资源的 URL
        URL resourceURL = classLoader.getResource(fileName);

        if (resourceURL != null) {
            // 返回资源的路径
            return resourceURL.getPath();
        } else {
            // 资源不存在
            return null;
        }
    }
}
